package com.fuze.navi.service;

import com.fuze.navi.domain.dto.InsertFormDTO;
import com.fuze.navi.domain.model.Coordinate;
import com.fuze.navi.domain.model.Line;
import com.fuze.navi.domain.model.Station;
import com.fuze.navi.domain.vo.CoordinateParamVO;

import java.util.List;
import java.util.Set;

/**
 * @author sepc_
 * @date 3/19/2021 09:30
 */
public interface NavigationService {

    /**
     * 根据电压顶级查询电站
     *
     * @param voltageLevel 制度的电压等级
     * @return 电站名称
     */
    List<Station> listStation(String voltageLevel);


    /**
     * 查询设备的坐标信息
     *
     * @param stationId 设备的所属电站的id
     * @return 设备的坐标信息列表
     */
    List<Coordinate> listCoordinate(Long stationId);

    /**
     * 根据id删除坐标信息
     *
     * @param coordinateIds 坐标信息的id
     */
    void deleteByCoordinateId(Long[] coordinateIds);

    /**
     * 更新坐标信息
     *
     * @param coordinate 更新坐标信息
     */
    void update(Coordinate coordinate);

    /**
     * 插入坐标信息
     *
     * @param insertFormDTO 插入的表单信息
     */
    void insert(InsertFormDTO insertFormDTO);

    /**
     * 导航功能
     *
     * @param coordinateParamVO 导航需要的参数经纬度坐标
     */
    void navigate(CoordinateParamVO coordinateParamVO);

    /**
     * 根据站id查询线路
     *
     * @param stationId 站id
     * @return 线路
     */
    List<Line> listLine(Long stationId);

    /**
     *
     * 获取所有的电压等级
     * @return 电压等级
     */
    Set<String> listAllVoltage();
}

